from tkinter import *
import os

'''
此模块提供ping测试功能，默认是ping测4个包，如果4个包都正常，则提示，网络正常；如果有丢包，则提示有丢包
'''

class pingtest():

    def __init__(self):
        pass

    def windowsone(self,root):
        w = Toplevel(root)
        w.title('网络检测工具')
        w.geometry('400x200')
        w.geometry('+600+400')
        w.maxsize(width='400',height='200')

        #标签页，用于注释说明
        l1 = Label(w,text='ping测试网络联通性',font='5')
        l1.grid(row=1,column=1,padx=5,pady=5)

        l2 = Label(w,text='目标ip',font='5',bg='yellow')
        l2.grid(row=2,column=0,padx=5,pady=5)

        l3 = Label(w,text='结果',font='5',bg='yellow')
        l3.grid(row=3,column=0,padx=5,pady=5)

        #输入框
        self.e1 = Entry(w)
        self.e1.grid(row=2,column=1,padx=5,pady=5)

        #开始按键
        b1 = Button(w,text='开始',font='5',bg='red',command=one.getresult)
        b1.grid(row=2,column=2,padx=5,pady=5)

        #输出框
        self.var=StringVar()
        print(self.var)
        self.e2 = Entry(w,textvariable=self.var)
        self.e2.grid(row=3,column=1,padx=5,pady=5)

        #退出按键
        # b2 = Button(w,text='退出',font='5',bg='red',command=quit)
        # b2.grid(row=3,column=2,padx=5,pady=5)

        w.mainloop()

    def getresult(self):
        #得到输入框中输入的值
        ipadd = self.e1.get()
        results = os.popen('ping %s'%ipadd).read()
        print(results)
        if '丢失 = 0' and not '无法访问目标主机' in results:
            self.var.set('网络正常')
        elif 'TTL' in results:
            self.var.set('网络正常')
        elif '100% 丢失' in results:
            self.var.set('网络不通')
        elif '无法访问目标主机' in results:
            self.var.set('网络不通')
        elif '请求超时' in results:
            self.var.set('网络不通或有丢包')
        else:
            self.var.set('网络有丢包')

#类实例化 
one=pingtest()

#模块单独执行的时候，把下面的井号去掉即可
#one.windowsone()






